{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "8093e27a-33f6-4cd9-a47b-ea94c3d0c514",
   "metadata": {},
   "source": [
    "# Evasion Attacks and Defenses on Hugging Face Models using ART\n",
    "\n",
    "In this notebook we will go over how to use ART to perform evasion attacks on a Hugging Face image classifier. We will be fine-tuning a pre-trained Data-efficient Image Transformer (DeiT) model available from Hugging Face on the CIFAR-10 dataset. We will apply the Projected Gradient Descent (PGD) attack on this model using ART functionality. Then we will be performing adversarial training to defend against such evasion attacks.\n",
    "\n",
    "Afterwards, we will be demonstrating further functionality with Hugging Face models such as using the PyTorch Image Models (timm) library or a custom Hugging Face model using a created config.\n",
    "\n",
    "In addition to the core ART dependencies you will need to install Pytorch and the Transformers library:\n",
    "\n",
    "`pip install torch torchvision`\n",
    "\n",
    "`pip install transformers`\n",
    "\n",
    "Let's look at how we can use ART to both attack and defend Hugging Face models!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "549129e5-f6f4-4995-b334-d22cb4cae76e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import torch\n",
    "import transformers\n",
    "\n",
    "from art.estimators.classification.hugging_face import HuggingFaceClassifierPyTorch\n",
    "from art.attacks.evasion import ProjectedGradientDescentPyTorch\n",
    "from art.defences.trainer import AdversarialTrainerMadryPGD\n",
    "from art.utils import load_dataset\n",
    "\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "0adf2bba-efc1-4db7-8041-698105537b08",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_subset: float32 (1000, 3, 32, 32)\n",
      "y_subset: int64 (1000,)\n"
     ]
    }
   ],
   "source": [
    "# We will use a small subset of the CIFAR-10 dataset\n",
    "\n",
    "(x_train, y_train), (_, _), _, _ = load_dataset('cifar10')\n",
    "x_train = np.transpose(x_train, (0, 3, 1, 2)).astype(np.float32)\n",
    "y_train = np.argmax(y_train, axis=1)\n",
    "\n",
    "classes = np.unique(y_train)\n",
    "samples_per_class = 100\n",
    "\n",
    "x_subset = []\n",
    "y_subset = []\n",
    "\n",
    "for c in classes:\n",
    "    indices = y_train == c\n",
    "    x_subset.append(x_train[indices][:samples_per_class])\n",
    "    y_subset.append(y_train[indices][:samples_per_class])\n",
    "\n",
    "x_subset = np.concatenate(x_subset)\n",
    "y_subset = np.concatenate(y_subset)\n",
    "\n",
    "print(f'x_subset:', x_subset.dtype, x_subset.shape)\n",
    "print(f'y_subset:', y_subset.dtype, y_subset.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "label_names = [\n",
    "    'airplane',\n",
    "    'automobile',\n",
    "    'bird',\n",
    "    'cat',\n",
    "    'deer',\n",
    "    'dog',\n",
    "    'frog',\n",
    "    'horse',\n",
    "    'ship',\n",
    "    'truck',\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create state_dicts directory for saving models\n",
    "\n",
    "if not os.path.isdir('./state_dicts'):\n",
    "    os.mkdir('./state_dicts')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f7b5ebcb",
   "metadata": {},
   "source": [
    "## Regular Training with ART\n",
    "\n",
    "We will first see how to load a model into ART's HuggingFaceClassifierPyTorch, train it, and attack it with PGD."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "5f797586-480b-432e-8b55-26a4ac2360f5",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of DeiTForImageClassificationWithTeacher were not initialized from the model checkpoint at facebook/deit-tiny-distilled-patch16-224 and are newly initialized because the shapes did not match:\n",
      "- cls_classifier.weight: found shape torch.Size([1000, 192]) in the checkpoint and torch.Size([10, 192]) in the model instantiated\n",
      "- cls_classifier.bias: found shape torch.Size([1000]) in the checkpoint and torch.Size([10]) in the model instantiated\n",
      "- distillation_classifier.weight: found shape torch.Size([1000, 192]) in the checkpoint and torch.Size([10, 192]) in the model instantiated\n",
      "- distillation_classifier.bias: found shape torch.Size([1000]) in the checkpoint and torch.Size([10]) in the model instantiated\n",
      "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
     ]
    }
   ],
   "source": [
    "# The HuggingFaceClassifierPyTorch follows broadly the same API as the PyTorchClassifier\n",
    "# So we can supply the loss function, the input shape of the data we will supply, the optimizer, etc.\n",
    "# Note, frequently we will be performing fine-tuning or transfer learning with vision transformers and \n",
    "# so we may be fine-tuning on differently sized inputs. \n",
    "# The input_shape argument refers to the shape of the supplied input data which may be different to \n",
    "# the shape required by the model.\n",
    "# To handle this HuggingFaceClassifierPyTorch has an extra argument of processor which will act on \n",
    "# every batch to process the data into the correct form required by the supplied model.\n",
    "# This needs to be manually specified by the user. For many attacks and defences to work it needs to be a \n",
    "# differentiable function.\n",
    "# Here the processor is a simple upsampler to enlarge the cifar images into the right size.\n",
    "\n",
    "model = transformers.AutoModelForImageClassification.from_pretrained(\n",
    "    'facebook/deit-tiny-distilled-patch16-224',\n",
    "    ignore_mismatched_sizes=True,\n",
    "    num_labels=10\n",
    ")\n",
    "upsampler = torch.nn.Upsample(scale_factor=7, mode='nearest')\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)\n",
    "loss_fn = torch.nn.CrossEntropyLoss()\n",
    "\n",
    "hf_model = HuggingFaceClassifierPyTorch(\n",
    "    model=model,\n",
    "    loss=loss_fn,\n",
    "    optimizer=optimizer,\n",
    "    input_shape=(3, 32, 32),\n",
    "    nb_classes=10,\n",
    "    clip_values=(0, 1),\n",
    "    processor=upsampler\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "01f68d34-e777-48b4-bdca-7c52a63e6e50",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loaded model checkpoint\n"
     ]
    }
   ],
   "source": [
    "# load saved model if it already exists, otherwise train it\n",
    "\n",
    "model_checkpoint_path = './state_dicts/deit_cifar_base_model.pt'\n",
    "if os.path.isfile(model_checkpoint_path):\n",
    "    hf_model.model.load_state_dict(torch.load(model_checkpoint_path, map_location=device))\n",
    "    print('loaded model checkpoint')\n",
    "else:\n",
    "    hf_model.fit(x_subset, y_subset, nb_epochs=5)\n",
    "    torch.save(hf_model.model.state_dict(), model_checkpoint_path)\n",
    "    print('saved model checkpoint')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "clean accuracy: 0.907\n"
     ]
    }
   ],
   "source": [
    "outputs = hf_model.predict(x_subset)\n",
    "clean_preds = np.argmax(outputs, axis=1)\n",
    "clean_acc = np.mean(clean_preds == y_subset)\n",
    "print('clean accuracy:', clean_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGbCAYAAAAr/4yjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAit0lEQVR4nO3de5BU9bnu8Wd199wvMDMMw3ARhkEQYZMcieJWwKhEIqhlgskxagWJUSrGW0wqJpSliZJCE2NBDHjJTvDES2m8V7HxxhZywByTHcEQUBQQEDFhhtsMt7l0r3X+MLzlCMjvZdNRzPdT5R8M77yzZvXqfrpn6McoSZJEAABISn3cBwAA+OQgFAAAhlAAABhCAQBgCAUAgCEUAACGUAAAGEIBAGAIBQCAIRRwRA0YMECXXnqp/XnRokWKokiLFi06Yl8jiiL96Ec/OmL7/lkuvfRSDRgw4KjZi39NhMKnyP33368oiuy/4uJiDR48WFdddZU2b978cR+ey/z584/KB37gaJf5uA8AR94tt9yihoYGtbW1acmSJbr77rs1f/58rVixQqWlpf/UYxk7dqz27t2rwsJC1+fNnz9fs2fPPmAw7N27V5nM0Xfp/upXv1Icxx/3YQAf6ei7Z+GQzj77bH3uc5+TJH3zm99UTU2N7rzzTj3zzDP62te+dsDP2b17t8rKyo74saRSKRUXFx/RnUd63z9LQUHBIWey2aziOHaHKHCk8OOjfwFnnHGGJGndunWS3v8ZdHl5udauXasJEyaooqJCF198sSQpjmPNnDlTw4YNU3Fxserq6jR16lRt3769y84kSTR9+nT17dtXpaWlOv3007Vy5cr9vvbBfqfwxz/+URMmTFBVVZXKyso0YsQIzZo1y45v9uzZktTlx2H7HOh3CsuWLdPZZ5+tyspKlZeX68wzz9Qrr7zSZWbfj9defvllXX/99aqtrVVZWZm+9KUvqbm5uctsS0uLVq1apZaWlkOe32eeeUYTJ05U7969VVRUpMbGRt16663K5XJd5j78s//169criiLdcccdmjlzphobG1VUVKTXX3/dztujjz6qadOmqVevXiorK9N5552njRs3HvKY7rjjDp1yyimqqalRSUmJRo4cqccff3y/uSiKdNVVV+npp5/W8OHDVVRUpGHDhum5557bb3bTpk36xje+obq6Opv7zW9+c8hjwdGFVwr/AtauXStJqqmpsY9ls1mNHz9eo0eP1h133GE/Vpo6daruv/9+TZkyRddcc43WrVunX/7yl1q2bJlefvlle7Z70003afr06ZowYYImTJigpUuX6qyzzlJHR8chj+fFF1/UOeeco/r6el177bXq1auX3njjDc2bN0/XXnutpk6dqvfee08vvviiHnjggUPuW7lypcaMGaPKykp9//vfV0FBge699159/vOf1+9//3uNGjWqy/zVV1+tqqoq3XzzzVq/fr1mzpypq666So8++qjNPPXUU5oyZYrmzp3b5RfnB3L//fervLxc119/vcrLy/XSSy/ppptuUmtrq372s58d8vjnzp2rtrY2XXHFFSoqKlJ1dbV27NghSfrJT36iKIp0ww03qKmpSTNnztS4ceP02muvqaSk5KA7Z82apfPOO08XX3yxOjo69Mgjj+grX/mK5s2bp4kTJ3aZXbJkiZ588kldeeWVqqio0C9+8QtNmjRJ77zzjl0zmzdv1sknn2whUltbq2effVaXXXaZWltbdd111x3y+8RRIsGnxty5cxNJyYIFC5Lm5uZk48aNySOPPJLU1NQkJSUlybvvvpskSZJMnjw5kZT84Ac/6PL5ixcvTiQlDz30UJePP/fcc10+3tTUlBQWFiYTJ05M4ji2uWnTpiWSksmTJ9vHFi5cmEhKFi5cmCRJkmSz2aShoSHp379/sn379i5f54O7vv3tbycHuzwlJTfffLP9+fzzz08KCwuTtWvX2sfee++9pKKiIhk7dux+52fcuHFdvtZ3vvOdJJ1OJzt27Nhvdu7cuQc8hg/as2fPfh+bOnVqUlpamrS1tdnHJk+enPTv39/+vG7dukRSUllZmTQ1NXX5/H3nrU+fPklra6t9/He/+10iKZk1a9ZB9x7omDo6OpLhw4cnZ5xxRpePS0oKCwuTNWvW2Mf+8pe/JJKSu+66yz522WWXJfX19cmWLVu6fP6FF16YdOvW7YDnAEcnfnz0KTRu3DjV1taqX79+uvDCC1VeXq6nnnpKffr06TL3rW99q8ufH3vsMXXr1k1f+MIXtGXLFvtv5MiRKi8v18KFCyVJCxYsUEdHh66++uouP9YJeba4bNkyrVu3Ttddd526d+/e5e8+uCtULpfTCy+8oPPPP18DBw60j9fX1+uiiy7SkiVL1Nra2uVzrrjiii5fa8yYMcrlctqwYYN97NJLL1WSJId8lSCpyzP2nTt3asuWLRozZoz27NmjVatWHfLzJ02apNra2gP+3de//nVVVFTYny+44ALV19dr/vz5wce0fft2tbS0aMyYMVq6dOl+s+PGjVNjY6P9ecSIEaqsrNTbb78t6f0fFT7xxBM699xzlSRJl2tj/PjxamlpOeBeHJ348dGn0OzZszV48GBlMhnV1dVpyJAhSqW65n8mk1Hfvn27fGz16tVqaWlRz549D7i3qalJkuzB89hjj+3y97W1taqqqvrIY9v3o6zhw4eHf0Mfobm5WXv27NGQIUP2+7uhQ4cqjmNt3LhRw4YNs48fc8wxXeb2HfOHf28SauXKlbrxxhv10ksv7RdAIb+TaGhoOOjfffgcR1GkQYMGaf369R+5c968eZo+fbpee+01tbe3d/n8D/vw+ZDePyf7zkdzc7N27Nih++67T/fdd98Bv96+awNHP0LhU+ikk06yf310MEVFRfsFRRzH6tmzpx566KEDfs7Bns0ebdLp9AE/nhzG/5l2x44dOu2001RZWalbbrlFjY2NKi4u1tKlS3XDDTcE/RPUj/rdwOFYvHixzjvvPI0dO1Zz5sxRfX29CgoKNHfuXD388MP7zR/qfOz7Hi655BJNnjz5gLMjRow4QkePjxuhANPY2KgFCxbo1FNP/cgHqv79+0t6/5XFB39k09zcfMhn2/t+TLFixQqNGzfuoHOhP0qqra1VaWmp3nzzzf3+btWqVUqlUurXr1/QrsOxaNEibd26VU8++aTGjh1rH9/3L73+p1avXt3lz0mSaM2aNR/5IPzEE0+ouLhYzz//vIqKiuzjc+fOPaxjqK2tVUVFhXK53EfeZvh04HcKMF/96leVy+V066237vd32WzW/kXMuHHjVFBQoLvuuqvLs+uZM2ce8muccMIJamho0MyZM23fPh/cte89Ex+e+bB0Oq2zzjpLzzzzTJcfqWzevFkPP/ywRo8ercrKykMe14eF/pPUfc+yP3jsHR0dmjNnjvtrHshvf/tb7dy50/78+OOP629/+5vOPvvsjzymKIq6/JPY9evX6+mnnz6sY0in05o0aZKeeOIJrVixYr+///A/58XRjVcKMKeddpqmTp2qGTNm6LXXXtNZZ52lgoICrV69Wo899phmzZqlCy64QLW1tfre976nGTNm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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(np.transpose(x_subset[1], (1, 2, 0)))\n",
    "plt.title(f'Prediction: {label_names[clean_preds[1]]}')\n",
    "plt.axis('off')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "adversarial accuracy: 0.057\n"
     ]
    }
   ],
   "source": [
    "# load adversarial samples if they already exist, otherwise generate them\n",
    "\n",
    "adv_samples_path = './state_dicts/x_adv_base.npy'\n",
    "if os.path.isfile(adv_samples_path):\n",
    "    x_adv = np.load(adv_samples_path)\n",
    "else:\n",
    "    attacker = ProjectedGradientDescentPyTorch(hf_model, eps=8/255, eps_step=1/255)\n",
    "    x_adv = attacker.generate(x_subset)\n",
    "    np.save(adv_samples_path, x_adv)\n",
    "\n",
    "outputs = hf_model.predict(x_adv)\n",
    "adv_preds = np.argmax(outputs, axis=1)\n",
    "adv_acc = np.mean(adv_preds == y_subset)\n",
    "print('adversarial accuracy:', adv_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGbCAYAAAAr/4yjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAkP0lEQVR4nO3de5CUhdXn8dOXp+/dcx/kDoIggpeI0WgANaJGdHd1U5s1yR9olQmJETVWYlKa8sq+VqwkhaXoxj8iKTVlKtki1kYqi6zIKyYhF1gNKAYRFF4EBuY+fe9+9g9fTjkB5RxDXo35fqr8w5kzZ555+un+Tc9M/4iEYRgKAAAiEv2wDwAA8NFBKAAAFKEAAFCEAgBAEQoAAEUoAAAUoQAAUIQCAEARCgAARSjgQzdlyhS55ppr9P+ff/55iUQi8vzzzx+3zxGJROSuu+46bvs+DqZMmSJXXHHFh30Y+IghFP7JrVy5UiKRiP6XSqVkxowZcsMNN8j+/fs/7MNzWb169T/MA//DDz8sK1eu/LAPAzhC/MM+AHw03HPPPTJ16lQpl8uyYcMGeeSRR2T16tWyZcsWyWQy/6HHsmDBAimVSpJIJFwft3r1almxYsVRg6FUKkk8/tG53B9++GHp7Owc9QwJ+Cj46NxL8KG67LLL5KyzzhIRkeuuu046Ojrkhz/8oTz99NPyhS984agfMzIyItls9rgfSzQalVQqdVx3Hu99/5H+XucZOBp+fISj+sxnPiMiIjt37hQRkWuuuUZyuZzs2LFDFi1aJPl8Xr70pS+JiEiz2ZTly5fL7NmzJZVKyZgxY2TJkiXS19c3amcYhrJs2TKZMGGCZDIZufDCC2Xr1q1HfO73+p3Cxo0bZdGiRdLW1ibZbFZOO+00eeCBB/T4VqxYISIy6sdhhx3tdwqbN2+Wyy67TAqFguRyObnooovkd7/73aiZwz9ee/HFF+WWW26Rrq4uyWazctVVV0lPT8+o2YGBAdm2bZsMDAy877mdMmWKbN26VdavX6/HecEFF4z6fOvXr5frr79euru7ZcKECfo1Tpky5Yh9d91116iv9bAnnnhCzj77bMlkMtLW1iYLFiyQNWvWvO+x/eQnP5F4PC7f+ta33ncOH188U8BR7dixQ0REOjo69G31el0uvfRSmTdvnnz/+9/XHystWbJEVq5cKddee63ceOONsnPnTnnooYdk8+bN8uKLL0oQBCIicscdd8iyZctk0aJFsmjRItm0aZNccsklUq1Wj3k8zz77rFxxxRUyduxYuemmm+SEE06QV199VX71q1/JTTfdJEuWLJG9e/fKs88+K48//vgx923dulXmz58vhUJBbr31VgmCQH70ox/JBRdcIOvXr5dzzjln1PzSpUulra1N7rzzTtm1a5csX75cbrjhBvnZz36mM6tWrZJrr71WHnvssff9sdDy5ctl6dKlksvl5PbbbxcRkTFjxoyauf7666Wrq0vuuOMOGRkZOebX89fuvvtuueuuu+S8886Te+65RxKJhGzcuFGee+45ueSSS476MY8++qh89atfldtuu02WLVvm/pz4mAjxT+2xxx4LRSRcu3Zt2NPTE+7evTt86qmnwo6OjjCdTod79uwJwzAMFy9eHIpI+J3vfGfUx7/wwguhiIRPPvnkqLf/+te/HvX2AwcOhIlEIrz88svDZrOpc7fddlsoIuHixYv1bevWrQtFJFy3bl0YhmFYr9fDqVOnhpMnTw77+vpGfZ537/r6178evtclLSLhnXfeqf9/5ZVXholEItyxY4e+be/evWE+nw8XLFhwxPlZuHDhqM/1jW98I4zFYmF/f/8Rs4899thRj+HdZs+eHZ5//vlHvP3wjnnz5oX1en3U+xYvXhxOnjz5iI+58847R33d27dvD6PRaHjVVVeFjUZj1Oy7v4bJkyeHl19+eRiGYfjAAw+EkUgkvPfee4957Ph448dHEBGRhQsXSldXl0ycOFGuvvpqyeVysmrVKhk/fvyoua997Wuj/v/nP/+5tLS0yMUXXywHDx7U/+bOnSu5XE7WrVsnIiJr166VarUqS5cuHfWjjptvvvmYx7Z582bZuXOn3HzzzdLa2jrqfUf7scmxNBoNWbNmjVx55ZVy4okn6tvHjh0rX/ziF2XDhg0yODg46mO+8pWvjPpc8+fPl0ajIW+++aa+7ZprrpEwDI/LL4+//OUvSywW+0Af+8tf/lKazabccccdEo2Ovosf7Xzdf//9ctNNN8n3vvc9+e53v/uBPic+PvjxEUREZMWKFTJjxgyJx+MyZswYmTlz5hEPKPF4XH++fdj27dtlYGBAuru7j7r3wIEDIiL64HnSSSeNen9XV5e0tbW977Ed/lHWnDlz7F/Q++jp6ZFisSgzZ848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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(np.transpose(x_adv[1], (1, 2, 0)))\n",
    "plt.title(f'Prediction: {label_names[adv_preds[1]]}')\n",
    "plt.axis('off')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "1a370096-d145-42cf-a59e-c553d81b0967",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
      "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
      "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n"
     ]
    },
    {
     "data": {
      "image/png": "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Fi1qcX7TNDsUMnv8+PEW7z25K3rSjOVwOKBpGruevXv3oqys7HP7bw955oRTgcPhwKRJk1BWVoaqqirr9R07duCVV16xjr/M83IyktC+ID+5Y2TvTzVDC2cOZ9VODwD893//NzZu3IjLL78ct99+O4YNG4bDhw/jD3/4A8rLy1u013Uda9aswZVXXolvfOMbKC4uRr9+/XDw4EG89tprSE9Px0svvQTgRG6U//mf/0FGRgaGDx+OrVu34m9/+xuysrK+6ssUzjI6Onfuuece/M///A+uuOIK3HnnnVbI+oABA/DBBx+06Peqq65CWloaZs+eDYfDgWuvvZbpBw8ejAceeAD33nsv9u7di6KiIqSlpWHPnj148cUXcfvtt2P27Nntjv3pp5/GqlWrcM0112Dw4MFobGzE6tWrkZ6ejquuugoA8P3vfx+PPPIIrrjiCkyZMgVHjx7FypUrMWTIkFbHfarvmyB8HosWLcKGDRswfvx4TJs2DYlEAo8//ji+8Y1vWHP0yzwvPp8Pw4cPx/PPP4/zzjsPPXv2xIgRIzBixAh885vfxEMPPYR4PI5+/fph48aN2LNnz1d5+UJH+YqjxU4J+/btM2+++WazV69epsfjMc8991xz+vTpZjQabTO09d133zV/9KMfmVlZWabH4zEHDBhgXnfddeamTZusNsePHzeLi4vNQCBgpqammpMmTTIrKyvNAQMGmLfccovV7mTIuj3EV8Jquy8dnTumaZoffPCBefnll5ter9fs16+fef/995tr165lIesqN910k5UioS3+93//1ywsLDRTUlLMlJQUMz8/35w+fbq5c+dOq83ll19ufuMb32jx3oqKCvPGG280c3NzTY/HY/bu3du8+uqrzXfeeYe1W7t2rTl06FDT4/GY+fn5Zmlpqblw4ULT/jUCwJw+fXqr44Qt5Lej902eLaEj/OMf/zBHjx5tut1u89xzzzWfeOKJVudoR54Xe8i6aZrmG2+8YfWvzuUDBw6Y11xzjZmZmWlmZGSYP/7xj81Dhw61GeIufH1opilet4IgCIIgdH3OKp8eQRAEQRCEL4osegRBEARB6BbIokcQBEEQhG6BLHoEQRAEQegWyKJHEARBEIRugSx6BEEQBEHoFnQoOaFhGDh06BDS0tLaTMUtnDmYponGxkbk5ORA12Vd+2WR+X92IfNfEL4c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",
      "text/plain": [
       "<Figure size 640x480 with 12 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# We can display the adversarial examples to highlight the added perturbation to the original sample.\n",
    "\n",
    "# shift to have min 0 and make perturbations 10x larger to visualize them.\n",
    "delta = ((x_subset - x_adv) + 8/255) * 10\n",
    "\n",
    "fig, axs = plt.subplots(3, 3)\n",
    "for i in range(3):\n",
    "    axs[i, 0].imshow(np.transpose(x_subset[i], (1, 2, 0)))\n",
    "    axs[i, 0].set_xlabel(label_names[clean_preds[i]])\n",
    "    axs[i, 0].tick_params(axis='both', which='both',length=0)\n",
    "    axs[i, 0].axes.xaxis.set_ticklabels([])\n",
    "    axs[i, 0].axes.yaxis.set_ticklabels([])\n",
    "    axs[i, 1].imshow(np.transpose(x_adv[i], (1, 2, 0)))\n",
    "    axs[i, 1].axes.xaxis.set_ticklabels([])\n",
    "    axs[i, 1].axes.yaxis.set_ticklabels([])\n",
    "    axs[i, 1].tick_params(axis='both', which='both',length=0)\n",
    "    axs[i, 1].set_xlabel(label_names[adv_preds[i]])\n",
    "    im = axs[i, 2].imshow(np.transpose(delta[i], (1, 2, 0)))\n",
    "    axs[i, 2].axis('off')\n",
    "    fig.colorbar(im)\n",
    "\n",
    "axs[0, 0].set_title('clean')\n",
    "axs[0, 1].set_title('adversarial')\n",
    "axs[0, 2].set_title('delta')\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0bc9c9df",
   "metadata": {},
   "source": [
    "## Adversarial Training with ART\n",
    "\n",
    "Now, rather than using regular training, we employ robust PGD training and evaluate the robust model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of DeiTForImageClassificationWithTeacher were not initialized from the model checkpoint at facebook/deit-tiny-distilled-patch16-224 and are newly initialized because the shapes did not match:\n",
      "- cls_classifier.weight: found shape torch.Size([1000, 192]) in the checkpoint and torch.Size([10, 192]) in the model instantiated\n",
      "- cls_classifier.bias: found shape torch.Size([1000]) in the checkpoint and torch.Size([10]) in the model instantiated\n",
      "- distillation_classifier.weight: found shape torch.Size([1000, 192]) in the checkpoint and torch.Size([10, 192]) in the model instantiated\n",
      "- distillation_classifier.bias: found shape torch.Size([1000]) in the checkpoint and torch.Size([10]) in the model instantiated\n",
      "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
     ]
    }
   ],
   "source": [
    "model = transformers.AutoModelForImageClassification.from_pretrained(\n",
    "    'facebook/deit-tiny-distilled-patch16-224',\n",
    "    ignore_mismatched_sizes=True,\n",
    "    num_labels=10\n",
    ")\n",
    "upsampler = torch.nn.Upsample(scale_factor=7, mode='nearest')\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)\n",
    "loss_fn = torch.nn.CrossEntropyLoss()\n",
    "\n",
    "hf_model = HuggingFaceClassifierPyTorch(\n",
    "    model=model,\n",
    "    loss=loss_fn,\n",
    "    optimizer=optimizer,\n",
    "    input_shape=(3, 32, 32),\n",
    "    nb_classes=10,\n",
    "    clip_values=(0, 1),\n",
    "    processor=upsampler\n",
    ")\n",
    "\n",
    "trainer = AdversarialTrainerMadryPGD(\n",
    "    classifier=hf_model,\n",
    "    nb_epochs=10,\n",
    "    eps=8/255,\n",
    "    eps_step=1/255,\n",
    "    max_iter=10\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loaded model checkpoint\n"
     ]
    }
   ],
   "source": [
    "# load saved model if it already exists, otherwise train it\n",
    "\n",
    "model_checkpoint_path = './state_dicts/deit_cifar_robust_model.pt'\n",
    "if os.path.isfile(model_checkpoint_path):\n",
    "    trainer.classifier.model.load_state_dict(torch.load(model_checkpoint_path, map_location=device))\n",
    "    print('loaded model checkpoint')\n",
    "else:\n",
    "    trainer.fit(x_subset, y_subset, nb_epochs=5)\n",
    "    torch.save(trainer.classifier.model.state_dict(), model_checkpoint_path)\n",
    "    print('saved model checkpoint')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "clean accuracy: 0.784\n"
     ]
    }
   ],
   "source": [
    "outputs = trainer.classifier.predict(x_subset)\n",
    "clean_preds = np.argmax(outputs, axis=1)\n",
    "clean_acc = np.mean(clean_preds == y_subset)\n",
    "print('clean accuracy:', clean_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGbCAYAAAAr/4yjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAit0lEQVR4nO3de5BU9bnu8Wd199wvMDMMw3ARhkEQYZMcieJWwKhEIqhlgskxagWJUSrGW0wqJpSliZJCE2NBDHjJTvDES2m8V7HxxhZywByTHcEQUBQQEDFhhtsMt7l0r3X+MLzlCMjvZdNRzPdT5R8M77yzZvXqfrpn6McoSZJEAABISn3cBwAA+OQgFAAAhlAAABhCAQBgCAUAgCEUAACGUAAAGEIBAGAIBQCAIRRwRA0YMECXXnqp/XnRokWKokiLFi06Yl8jiiL96Ec/OmL7/lkuvfRSDRgw4KjZi39NhMKnyP33368oiuy/4uJiDR48WFdddZU2b978cR+ey/z584/KB37gaJf5uA8AR94tt9yihoYGtbW1acmSJbr77rs1f/58rVixQqWlpf/UYxk7dqz27t2rwsJC1+fNnz9fs2fPPmAw7N27V5nM0Xfp/upXv1Icxx/3YQAf6ei7Z+GQzj77bH3uc5+TJH3zm99UTU2N7rzzTj3zzDP62te+dsDP2b17t8rKyo74saRSKRUXFx/RnUd63z9LQUHBIWey2aziOHaHKHCk8OOjfwFnnHGGJGndunWS3v8ZdHl5udauXasJEyaooqJCF198sSQpjmPNnDlTw4YNU3Fxserq6jR16lRt3769y84kSTR9+nT17dtXpaWlOv3007Vy5cr9vvbBfqfwxz/+URMmTFBVVZXKyso0YsQIzZo1y45v9uzZktTlx2H7HOh3CsuWLdPZZ5+tyspKlZeX68wzz9Qrr7zSZWbfj9defvllXX/99aqtrVVZWZm+9KUvqbm5uctsS0uLVq1apZaWlkOe32eeeUYTJ05U7969VVRUpMbGRt16663K5XJd5j78s//169criiLdcccdmjlzphobG1VUVKTXX3/dztujjz6qadOmqVevXiorK9N5552njRs3HvKY7rjjDp1yyimqqalRSUmJRo4cqccff3y/uSiKdNVVV+npp5/W8OHDVVRUpGHDhum5557bb3bTpk36xje+obq6Opv7zW9+c8hjwdGFVwr/AtauXStJqqmpsY9ls1mNHz9eo0eP1h133GE/Vpo6daruv/9+TZkyRddcc43WrVunX/7yl1q2bJlefvlle7Z70003afr06ZowYYImTJigpUuX6qyzzlJHR8chj+fFF1/UOeeco/r6el177bXq1auX3njjDc2bN0/XXnutpk6dqvfee08vvviiHnjggUPuW7lypcaMGaPKykp9//vfV0FBge699159/vOf1+9//3uNGjWqy/zVV1+tqqoq3XzzzVq/fr1mzpypq666So8++qjNPPXUU5oyZYrmzp3b5RfnB3L//fervLxc119/vcrLy/XSSy/ppptuUmtrq372s58d8vjnzp2rtrY2XXHFFSoqKlJ1dbV27NghSfrJT36iKIp0ww03qKmpSTNnztS4ceP02muvqaSk5KA7Z82apfPOO08XX3yxOjo69Mgjj+grX/mK5s2bp4kTJ3aZXbJkiZ588kldeeWVqqio0C9+8QtNmjRJ77zzjl0zmzdv1sknn2whUltbq2effVaXXXaZWltbdd111x3y+8RRIsGnxty5cxNJyYIFC5Lm5uZk48aNySOPPJLU1NQkJSUlybvvvpskSZJMnjw5kZT84Ac/6PL5ixcvTiQlDz30UJePP/fcc10+3tTUlBQWFiYTJ05M4ji2uWnTpiWSksmTJ9vHFi5cmEhKFi5cmCRJkmSz2aShoSHp379/sn379i5f54O7vv3tbycHuzwlJTfffLP9+fzzz08KCwuTtWvX2sfee++9pKKiIhk7dux+52fcuHFdvtZ3vvOdJJ1OJzt27Nhvdu7cuQc8hg/as2fPfh+bOnVqUlpamrS1tdnHJk+enPTv39/+vG7dukRSUllZmTQ1NXX5/H3nrU+fPklra6t9/He/+10iKZk1a9ZB9x7omDo6OpLhw4cnZ5xxRpePS0oKCwuTNWvW2Mf+8pe/JJKSu+66yz522WWXJfX19cmWLVu6fP6FF16YdOvW7YDnAEcnfnz0KTRu3DjV1taqX79+uvDCC1VeXq6nnnpKffr06TL3rW99q8ufH3vsMXXr1k1f+MIXtGXLFvtv5MiRKi8v18KFCyVJCxYsUEdHh66++uouP9YJeba4bNkyrVu3Ttddd526d+/e5e8+uCtULpfTCy+8oPPPP18DBw60j9fX1+uiiy7SkiVL1Nra2uVzrrjiii5fa8yYMcrlctqwYYN97NJLL1WSJId8lSCpyzP2nTt3asuWLRozZoz27NmjVatWHfLzJ02apNra2gP+3de//nVVVFTYny+44ALV19dr/vz5wce0fft2tbS0aMyYMVq6dOl+s+PGjVNjY6P9ecSIEaqsrNTbb78t6f0fFT7xxBM699xzlSRJl2tj/PjxamlpOeBeHJ348dGn0OzZszV48GBlMhnV1dVpyJAhSqW65n8mk1Hfvn27fGz16tVqaWlRz549D7i3qalJkuzB89hjj+3y97W1taqqqvrIY9v3o6zhw4eHf0Mfobm5WXv27NGQIUP2+7uhQ4cqjmNt3LhRw4YNs48fc8wxXeb2HfOHf28SauXKlbrxxhv10ksv7RdAIb+TaGhoOOjfffgcR1GkQYMGaf369R+5c968eZo+fbpee+01tbe3d/n8D/vw+ZDePyf7zkdzc7N27Nih++67T/fdd98Bv96+awNHP0LhU+ikk06yf310MEVFRfsFRRzH6tmzpx566KEDfs7Bns0ebdLp9AE/nhzG/5l2x44dOu2001RZWalbbrlFjY2NKi4u1tKlS3XDDTcE/RPUj/rdwOFYvHixzjvvPI0dO1Zz5sxRfX29CgoKNHfuXD388MP7zR/qfOz7Hi655BJNnjz5gLMjRow4QkePjxuhANPY2KgFCxbo1FNP/cgHqv79+0t6/5XFB39k09zcfMhn2/t+TLFixQqNGzfuoHOhP0qqra1VaWmp3nzzzf3+btWqVUqlUurXr1/QrsOxaNEibd26VU8++aTGjh1rH9/3L73+p1avXt3lz0mSaM2aNR/5IPzEE0+ouLhYzz//vIqKiuzjc+fOPaxjqK2tVUVFhXK53EfeZvh04HcKMF/96leVy+V066237vd32WzW/kXMuHHjVFBQoLvuuqvLs+uZM2ce8muccMIJamho0MyZM23fPh/cte89Ex+e+bB0Oq2zzjpLzzzzTJcfqWzevFkPP/ywRo8ercrKykMe14eF/pPUfc+yP3jsHR0dmjNnjvtrHshvf/tb7dy50/78+OOP629/+5vOPvvsjzymKIq6/JPY9evX6+mnnz6sY0in05o0aZKeeOIJrVixYr+///A/58XRjVcKMKeddpqmTp2qGTNm6LXXXtNZZ52lgoICrV69Wo899phmzZqlCy64QLW1tfre976nGTNm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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(np.transpose(x_subset[1], (1, 2, 0)))\n",
    "plt.title(f'Prediction: {label_names[clean_preds[1]]}')\n",
    "plt.axis('off')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "adversarial accuracy: 0.569\n"
     ]
    }
   ],
   "source": [
    "# load adversarial samples if they already exist, otherwise generate them\n",
    "\n",
    "adv_samples_path = './state_dicts/x_adv_robust.npy'\n",
    "if os.path.isfile(adv_samples_path):\n",
    "    x_adv = np.load(adv_samples_path)\n",
    "else:\n",
    "    attacker = ProjectedGradientDescentPyTorch(trainer.classifier, eps=8/255, eps_step=1/255)\n",
    "    x_adv = attacker.generate(x_subset)\n",
    "    np.save(adv_samples_path, x_adv)\n",
    "\n",
    "outputs = trainer.classifier.predict(x_adv)\n",
    "adv_preds = np.argmax(outputs, axis=1)\n",
    "adv_acc = np.mean(adv_preds == y_subset)\n",
    "print('adversarial accuracy:', adv_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(np.transpose(x_adv[1], (1, 2, 0)))\n",
    "plt.title(f'Prediction: {label_names[adv_preds[1]]}')\n",
    "plt.axis('off')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
      "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n",
      "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAHWCAYAAACc+jjdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC0IklEQVR4nOz9eZwU1b3/j7+qqnume/YNZhgcdmQREIWIGJcsXMHEXIhJXJLPT5m4fL4xXK+Xq9HkKrglGjWGG2NConHAmxgxy8VPNtTLlSRG1IgaVBABWYZlhplh9pme7q6q3x9Inff7dFfZM8wgzLyfPvrhqTqnTp2qefVw5ryXY7iu60IQBEEQBGGQY37UAxAEQRAEQTgeyKRHEARBEIQhgUx6BEEQBEEYEsikRxAEQRCEIYFMegRBEARBGBLIpEcQBEEQhCGBTHoEQRAEQRgSyKRHEARBEIQhgUx6BEEQBEEYEgy6Sc+GDRtgGAY2bNjwUQ9FEDJm1apVMAwDu3fv/qiHMqAYhoE77rij19fJ91roK3fccQcMw+j1dYsXL8aYMWP6f0DCR8qgm/QIgiAIQn/T1dWFO+64QybeJzmhj3oAgiAMHbq7uxEKya8d4eSjq6sLd955JwDgE5/4xEc7GKHPyEqPIAxhurq6BvwejuMgFosBACKRiEx6BEH4yDgpJz379+/H1VdfjcrKSmRnZ2Ps2LH42te+hng87nvNK6+8ggULFqCwsBA5OTm44IIL8Le//Y212bNnD66//npMmjQJ0WgUpaWl+NKXvpTiZ3HU/+Jvf/sbli5dimHDhiE3Nxef//zn0dDQMBCPLJzgZKodAHjnnXfwqU99CtFoFKeccgruueceOI7D2lx88cUYN25c2nvNnTsXs2fPZud+/vOfY9asWYhGoygpKcHll1+O2tpa1uYTn/gEpk2bhk2bNuH8889HTk4OvvWtbwEAXnvtNcyfPx9lZWWIRqMYO3YsvvrVr7LrH3zwQZxzzjkoLS1FNBrFrFmz8Otf/zplfIZhYMmSJfjFL36B0047DdnZ2Vi3bp1XR316evPeBOHDePHFF/Gxj30MkUgE48ePx09+8pO07TL5vlB2796NYcOGAQDuvPNOGIbBtLx582YsXrwY48aNQyQSQUVFBb761a+iqamp359RODZOuj+5Dhw4gLPOOgstLS247rrrMHnyZOzfvx+//vWvff9q/d///V9cdNFFmDVrFpYvXw7TNFFTU4NPfepT+Otf/4qzzjoLAPD3v/8dL730Ei6//HKccsop2L17N3784x/jE5/4BLZs2YKcnBzW77/8y7+guLgYy5cvx+7du7FixQosWbIEa9asGfD3IJxYZKqduro6fPKTn0QymcStt96K3Nxc/PSnP0U0GmX9XXbZZbjyyivx97//HR/72Me883v27MHLL7+MBx54wDv37W9/G7fffjsuvfRSXHPNNWhoaMDDDz+M888/H2+88QaKioq8tk1NTbjoootw+eWX4//8n/+D8vJyHDp0CBdeeCGGDRuGW2+9FUVFRdi9ezd++9vfsjH953/+J/75n/8ZX/nKVxCPx/HUU0/hS1/6En7/+9/js5/9LGv7v//7v3j66aexZMkSlJWV+TqE9vY7Jwh+vPXWW56O77jjDiSTSSxfvhzl5eWsXW++L0cZNmwYfvzjH+NrX/saPv/5z+OSSy4BAMyYMQMA8Pzzz+P9999HdXU1Kioq8M477+CnP/0p3nnnHbz88st9cqQWBgj3JOPKK690TdN0//73v6fUOY7jvvDCCy4A94UXXvDOTZw40Z0/f77rOI7Xtquryx07dqz7T//0T+yczsaNG10A7hNPPOGdq6mpcQG48+bNY33+27/9m2tZltvS0tIfjyqcRGSqnRtvvNEF4L7yyiveuUOHDrmFhYUuAHfXrl2u67pua2urm52d7f77v/876/P+++93DcNw9+zZ47qu6+7evdu1LMv99re/zdq99dZbbigUYucvuOACF4C7cuVK1va///u/XQBpv1NBzxiPx91p06a5n/rUp9h5AK5pmu4777yT0gcAd/ny5b59um7696Z/rwVBZ9GiRW4kEvG+G67rulu2bHEty3KP/lPXm+/LVVdd5Y4ePdo7bmhoSNHvUdLp+Je//KULwP3LX/5yjE8m9CcnlXnLcRysXbsWn/vc51KW9wGknU2/+eab2L59O7785S+jqakJjY2NaGxsRGdnJz796U/jL3/5i2daoH9tJxIJNDU1YcKECSgqKsLrr7+e0vd1113H7nneeefBtm3s2bOnPx5XOInIVDt//OMfcfbZZ3uri8CRvyK/8pWvsP4KCgpw0UUX4emnn4brut75NWvW4Oyzz8aoUaMAAL/97W/hOA4uvfRST9uNjY2oqKjAxIkT8cILL7B+s7OzUV1dzc4d/cv297//PRKJREbP2NzcjNbWVpx33nlpvxsXXHABpk6d6ttXuj4z+c4JQjps28azzz6LRYsWed8NAJgyZQrmz5/vHff2+5IpVMexWAyNjY04++yzAUB0fIJxUpm3Ghoa0NbWhmnTpmV8zfbt2wEAV111lW+b1tZWFBcXo7u7G/feey9qamqwf/9+9o9Na2trynX0ywUAxcXFAI78gyAMLTLVzp49ezBnzpyU6ydNmpRy7rLLLsPatWuxceNGnHPOOdi5cyc2bdqEFStWeG22b98O13UxceLEtOMKh8PseOTIkcjKymLnLrjgAnzhC1/AnXfeie9///v4xCc+gUWLFuHLX/4ysrOzvXa///3vcc899+DNN99ET0+Pdz7dHxtjx45NOx6d3n7nBCEdDQ0N6O7uTvs9mDRpEv74xz8C6P33JVMOHz6MO++8E0899RQOHTrE6kTHJxYn1aSnLxxdxXnggQcwc+bMtG3y8vIAHPHRqampwY033oi5c+eisLAQhmHg8ssvT3E0BQDLstL2R39xC0OD3monEz73uc8hJycHTz/9NM455xw8/fTTME0TX/rSl7w2juPAMAz86U9/SqvHo9o+iu47BByZtPz617/Gyy+/jN/97nd49tln8dWvfhXf+9738PLLLyMvLw9//etf8c///M84//zz8aMf/QgjRoxAOBxGTU0NnnzyyZQ+090nHQPx3gTBj95+XzLl0ksvxUsvvYSbb74ZM2fORF5eHhzHwYIFC0THJxgn1aRn2LBhKCgowNtvv53xNePHjwdwxFwwb968wLa//vWvcdVVV+F73/uedy4Wi6GlpaVP4xWGDplqZ/To0d7qI2Xbtm0p53Jzc3HxxRfjV7/6FR566CGsWbMG5513HiorK70248ePh+u6GDt2LE499dRjeoazzz4bZ599Nr797W/jySefxFe+8hU89dRTuOaaa/Cb3/wGkUgEzz77LFv9qampOaZ7yndO6A+GDRuGaDT6od+tY/m++DkjNzc3Y/369bjzzjuxbNky73y6sQgfPSeVT49pmli0aBF+97vf4bXXXkupT7fCMmvWLIwfPx4PPvggOjo6UuppiLllWSl9PPzww7Btux9GLwxmMtXOZz7zGbz88st49dVXvXMNDQ34xS9+kbbfyy67DAcOHMBjjz2Gf/zjH7jssstY/SWXXALLsnDnnXem3N913YxCZpubm1OuPboqetSMZVkWDMNgz7N7926sXbv2Q/sPQr5zQn9gWRbmz5+PtWvXYu/evd75rVu34tlnn/WOj+X7cjSSUJ+QH10x0vujZmjhxOGkWukBgO985zt47rnncMEFF+C6667DlClTcPDgQfzqV7/Ciy++mNLeNE089thjuOiii3DaaaehuroaI0eOxP79+/HCCy+goKAAv/vd7wAcyY3yX//1XygsLMTUqVOxceNG/M///A9KS0uP92MKJxmZaucb3/gG/uu//gsLFizAv/7rv3oh66NHj8bmzZtT+v3MZz6D/Px83HTTTbAsC1/4whdY/fjx43HPPffgm9/8Jnbv3o1FixYhPz8fu3btwn//93/juuuuw0033RQ49tWrV+NHP/oRPv/5z2P8+PFob2/Ho48+ioKCAnzmM58BAHz2s5/FQw89hAULFuDLX/4yDh06hEceeQQTJkxIO+7+fm+C8GHceeedWLduHc477zxcf/31SCaTePjhh3Haaad5Gj2W70s0GsXUqVOxZs0anHrqqSgpKcG0adMwbdo0nH/++bj//vuRSCQwcuRIPPfcc9i1a9fxfHwhU45ztFi/sGfPHvfKK690hw0b5mZnZ7vjxo1zv/71r7s9PT2+oa1vvPGGe8kll7ilpaVudna2O3r0aPfSSy91169f77Vpbm52q6ur3bKyMjcvL8+dP3++++6777qjR492r7rqKq/d0ZB1PcRXwmqHLplqx3Vdd/Pmze4FF1zgRiIRd+TIke7dd9/t/uxnP2Mh65SvfOUrXooEP37zm9+45557rpubm+vm5ua6kydPdr/+9a+727Zt89pccMEF7mmnnZZy7euvv+5eccUV7qhRo9zs7Gx3+PDh7sUXX+y+9tprrN3PfvYzd+LEiW52drY7efJkt6amxl2+fLmr/xoB4H79619PO05oIb+Zvjf5bgmZ8Oc//9mdNWuWm5WV5Y4bN85duXJlWo1m8n3RQ9Zd13Vfeuklr3+q5X379rmf//zn3aKiIrewsND90pe+5B44cMA3xF346DBcV7xuBUEQBEEY/JxUPj2CIAiCIAh9RSY9giAIgiAMCWTSIwiCIAjCkEAmPYIgCIIgDAlk0iMIgiAIwpBAJj2CIAiCIAwJMkpO6DgODhw4gPz8fN9U3MKJg+u6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",
      "text/plain": [
       "<Figure size 640x480 with 12 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# We can display the adversarial examples to highlight the added perturbation to the original sample.\n",
    "\n",
    "# shift to have min 0 and make perturbations 10x larger to visualize them.\n",
    "delta = ((x_subset - x_adv) + 8/255) * 10\n",
    "\n",
    "fig, axs = plt.subplots(3, 3)\n",
    "for i in range(3):\n",
    "    axs[i, 0].imshow(np.transpose(x_subset[i], (1, 2, 0)))\n",
    "    axs[i, 0].set_xlabel(label_names[clean_preds[i]])\n",
    "    axs[i, 0].tick_params(axis='both', which='both',length=0)\n",
    "    axs[i, 0].axes.xaxis.set_ticklabels([])\n",
    "    axs[i, 0].axes.yaxis.set_ticklabels([])\n",
    "    axs[i, 1].imshow(np.transpose(x_adv[i], (1, 2, 0)))\n",
    "    axs[i, 1].axes.xaxis.set_ticklabels([])\n",
    "    axs[i, 1].axes.yaxis.set_ticklabels([])\n",
    "    axs[i, 1].tick_params(axis='both', which='both',length=0)\n",
    "    axs[i, 1].set_xlabel(label_names[adv_preds[i]])\n",
    "    im = axs[i, 2].imshow(np.transpose(delta[i], (1, 2, 0)))\n",
    "    axs[i, 2].axis('off')\n",
    "    fig.colorbar(im)\n",
    "\n",
    "axs[0, 0].set_title('clean')\n",
    "axs[0, 1].set_title('adversarial')\n",
    "axs[0, 2].set_title('delta')\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e9a80e5",
   "metadata": {},
   "source": [
    "# PyTorch Image Models (timm)\n",
    "\n",
    "PyTorch Image Models (timm) is a poular repository for SOTA implementations of image models and Hugging Face is hosting many of the models and weights.\n",
    "\n",
    "We can use timm models here with the same wrapper.\n",
    "\n",
    "To run this part of the notebook we need to install the timm library\n",
    "\n",
    "`pip install timm`\n",
    "\n",
    "This notebook was ran with timm==0.9.8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "import timm\n",
    "\n",
    "# We can also try different architectures,\n",
    "# for example one of the most popular models on Huggingface is the resnet-50\n",
    "model = timm.create_model('resnet50.a1_in1k', pretrained=True)\n",
    "upsampler = torch.nn.Upsample(scale_factor=7, mode='nearest')\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)\n",
    "loss_fn = torch.nn.CrossEntropyLoss()\n",
    "\n",
    "timm_model = HuggingFaceClassifierPyTorch(\n",
    "    model=model,\n",
    "    loss=loss_fn,\n",
    "    input_shape=(3, 32, 32),\n",
    "    nb_classes=10,\n",
    "    optimizer=optimizer,\n",
    "    clip_values=(0, 1),\n",
    "    processor=upsampler\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "timm_model.fit(x_subset[:2], y_subset[:2], nb_epochs=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "output = timm_model.predict(x_subset[:2])\n",
    "preds = np.argmax(output, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Custom Hugging Face Models\n",
    "\n",
    "We can also create custom Hugging Face models using a custom configutation. The ART wrapper will allow us to use the model in the same way."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "5d29b5ab-7f5b-4136-903e-fc0442c4f15b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# We can also use the interface so supply custom Hugging Face models.\n",
    "# Here is a simple example for running a toy neural network classifier.\n",
    "\n",
    "from transformers.modeling_utils import PreTrainedModel\n",
    "from transformers.configuration_utils import PretrainedConfig\n",
    "from transformers.modeling_outputs import ImageClassifierOutput\n",
    "\n",
    "\n",
    "class ModelConfig(PretrainedConfig):\n",
    "    def __init__(self, **kwargs):\n",
    "        super().__init__(**kwargs)\n",
    "        self.device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "\n",
    "class Model(PreTrainedModel):\n",
    "    def __init__(self, config):\n",
    "        super().__init__(config)\n",
    "        self.conv = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)\n",
    "        self.conv2 = torch.nn.Conv2d(in_channels=32, out_channels=32, kernel_size=3)\n",
    "        self.relu = torch.nn.ReLU()\n",
    "        self.pool = torch.nn.MaxPool2d(2, 2)\n",
    "        self.fullyconnected = torch.nn.Linear(6272, 10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.relu(self.conv(x))\n",
    "        x = self.relu(self.conv2(x))\n",
    "        x = self.pool(x)\n",
    "        x = x.reshape(-1, 6272)\n",
    "        x = self.fullyconnected(x)\n",
    "        return ImageClassifierOutput(logits=x)\n",
    "\n",
    "\n",
    "config = ModelConfig()\n",
    "model = Model(config=config)\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)\n",
    "loss_fn = torch.nn.CrossEntropyLoss()\n",
    "simple_hf_classifier = HuggingFaceClassifierPyTorch(\n",
    "    model=model,\n",
    "    loss=loss_fn,\n",
    "    optimizer=optimizer,\n",
    "    input_shape=(3, 32, 32),\n",
    "    nb_classes=10,\n",
    "    clip_values=(0, 1),\n",
    "    processor=None  # No processor is needed as the data is of the correct size for the model.\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "simple_hf_classifier.fit(x_subset, y_subset, nb_epochs=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "clean accuracy: 0.39\n"
     ]
    }
   ],
   "source": [
    "outputs = simple_hf_classifier.predict(x_subset)\n",
    "acc = np.mean(np.argmax(outputs, axis=1) == y_subset)\n",
    "print('clean accuracy:', acc)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
